package main

import "fmt"
import "golang.org/x/sync/errgroup"

func main() {
	var eg errgroup.Group

	//匿名函数将会通过GO关键字启动一个协程
	eg.Go(func() error {
		fmt.Print("task 1\n")
		return nil
	})

	eg.Go(func() error {
		fmt.Print("task 2\n")
		return fmt.Errorf("task 2 error")
	})

	// 使用Wait 等待所有的协程执行完毕后，再进行后面的逻辑，同时可以记录两个协程的错误
	if err := eg.Wait(); err != nil {
		fmt.Printf("some error occur: %s\n", err.Error())
	}

	fmt.Print("over")
}
